//
//  MyTableViewController.m
//  13-AutoLayout强化
//
//  Created by dllo on 16/8/1.
//  Copyright © 2016年 DM.C. All rights reserved.
//

#import "MyTableViewController.h"
#import "MyTableViewCell.h"
#import "SelfSizeTool.h"

@interface MyTableViewController ()
@property (nonatomic, strong) NSArray  *array;
@end

@implementation MyTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
    
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
    self.array = @[@"猴子爬绳这道力学怪题乍看非常简单，可是据说它却使刘易斯．卡罗尔感到困惑。至于这道怪题是否由这位因《爱丽丝漫游奇境记》而闻名的牛津大学数学专家提出来的，那就不清楚了。总之，在一个不走运的时刻，他就下述问题征询人们的意见:一根绳子穿过无摩擦力的滑轮，在其一端悬挂着一只10磅重的砝码，绳子的另一端有只猴子，同砝码正好取得平衡。当猴子开始向上爬时，砝码将如何动作呢?真奇怪，卡罗尔写道，许多优秀的数学家给出了截然不同的答案。普赖斯认为砝码将向上升，而且速度越来越快。克利夫顿(还有哈考特)则认为，砝码将以与猴子一样的速度向上升起，然而桑普森却说，砝码将会向下降!一位杰出的机械工程师说这不会比苍蝇在绳子上爬更起作用，而一位科学家却认为砝码的上升或下降将取决于猴子吃苹果速度的倒数，然而还得从中求出猴子尾巴的平方根。严肃地说，这道题目非常有趣，值得认真推敲。它很能说明趣题与力学问题之间的紧密联系。砝码将以与猴子相同的速度上升，因为它们质量相同，受力也相同", @"5名海盗抢得了窖藏的100块金子，并打算瓜分这些战利品。这是一些讲民主的海盗（当然是他们自己特有的民主），他们的习惯是按下面的方式进行分配：最厉害的一名海盗提出分配方案，然后所有的海盗（包括提出方案者本人）就此方案进行表决。如果50%或更多的海盗赞同此方案，此方案就获得通过并据此分配战利品。否则提出方案的海盗将被扔到海里，然后下一名最厉害的海盗又重复上述过程。所有的海盗都乐于看到他们的一位同伙被扔进海里，不过，如果让他们选择的话，他们还是宁可得一笔现金。他们当然也不愿意自己被扔到海里。所有的海盗都是有理性的，而且知道其他的海盗也是有理性的。此外，没有两名海盗是同等厉害的——这些海盗按照完全由上到下的等级排好了座次，并且每个人都清楚自己和其他所有人的等级。这些金块不能再分，也不允许几名海盗共有金块，因为任何海盗都不相信他的同伙会遵守关于共享金块的安排。这是一伙每人都只为自己打算的海盗。最凶的一名海盗应当提出什么样的分配方案才能使他获得最多的金子呢", @"话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子!大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先."];
    // 1.自定义cell self-sizing iOS 8以后出的
    // 效率低, 系统计算
    // 预估高度
//    self.tableView.estimatedRowHeight = 40;
    // 高度 自动计算
//    self.tableView.rowHeight = UITableViewAutomaticDimension;
    // 2.根据label内容, 计算高度, 并赋予tableView
    // 好处, 可以存储高度, 可以省掉部分计算时间
    
    // 优先级
    // 1.优先级分四挡  1000  750  250 50
    // 2.高优先级会先被执行, 根据情况, 低优先级可能被舍弃
    // 3.优先级一般被用来解决约束冲突的问题(解决约束冲突, 找关键数字)
    // 4.1000的优先级, 在sb/xib中为实线, 低于1000的优先级一般为虚线
    // 5.还可以用优先级做动画效果

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return _array.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuse" forIndexPath:indexPath];
    cell.labelOfContent.text = self.array[indexPath.row];
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CGFloat height = [SelfSizeTool selfSizeHeightWithString:_array[indexPath.row] width:([UIScreen mainScreen].bounds.size.width - 10) font:[UIFont systemFontOfSize:17]];
    return height + 0.5;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/

/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
*/

/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/

/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end
